// pages/login/login.js
/*{
单元名称：方通通用登录
单元功能：使用账号密码登录、或微信一键登录。固定系统号
所属模块功能：
创建人：yan
创建时间：231123
修改人：
修改时间：
}*/
Page({

  /**
   * 页面的初始数据
   */
  data: {
    avatar: wx.getStorageSync('avatar'),             // 头像

    system: [],
    systemIndex: 0,
    roleIndex: 0,

    system_id: 1179,  //固定系统号

    isWeLogin: true,
    isBinding: false,

  },
  //切换登录方式
  toggleLoginType () {
    this.setData({ isWeLogin: !this.data.isWeLogin })
  },
  //取消绑定
  cancelBinding () {
    this.setData({ isWeLogin: false, isBinding: false })

  },
  //跳转到注册页
  navTo () {
    wx.navigateTo({ url: '/SlagCar/Register/Register' })
  },
  // 231219 liang 忘记密码 跳转
  navToForget () {
    wx.navigateTo({ url: '/SlagCar/ForgetPwd/ForgetPwd' })
  },
  // 231219

  // methods
  formSubmit (e) {   // form提交按钮
    let formData = e.detail.value,
      flag = false,
      keyArr = {
        // system_id: '系统',
        User: '账号',
        Password: '密码',
      }
    flag = Object.keys(keyArr).some((key, i) => {
      if (!formData[key]) {
        this._showToast(`请填写${keyArr[key]}！`)
        return true
      }
    })
    if (flag) return;


    wx.showLoading({ mask: true })
    // 提交
    let post = { system_id: this.data.system_id, ...formData };

    let { isBinding, isWeLogin } = this.data;
    if (isBinding) {
      this.updateWxBind(post);
      return
    }

    this.postLogin(post).then(res => {
      wx.hideLoading();

      // 存储登录信息
      this.setLoginStorage(res.data.row[0] || {}, formData)

      // 跳转到首页
      wx.reLaunch({ url: '/repairPages/service_menu/service_menu' });
    })
  },

  postLogin (post) {
    return new Promise(resolve => {
      wx.$post(1, 'Authorize/Token_miniprogram_system', post).then(res => {
        if (res.errcode != 0) return;
        resolve(res);
      })
    })
  },

  //储存登录信息
  setLoginStorage (data, formData = {}) {
    let { system_id } = data,
      { avatar } = this.data;
    let storageObj = {
      loginAcct: formData.User,
      loginPwd: formData.Password,
      avatar,
      system_type: 'ZT',
    }
    Object.entries(storageObj).forEach(([key, val]) => wx.setStorageSync(key, val));
    wx.$util.setLoginStorage(data);
    wx.$getBarTitle(system_id);
  },

  // 微信用户一键登录
  getWxLogin () {
    wx.login({
      success: (res) => {
        console.log(res);
        if (res.code) {
          wx.showLoading({ mask: true, })
          wx.$post(1, 'Authorize/Token_miniprogram_system', { code: res.code, system_id: this.data.system_id, }).then(res => {
            if (res.errcode !== 0) return
            let data = res.data.row[0] || {}
            if (data.token) {  // 已绑定账号，返回登录信息返回字段内容，与/api/v1/Authorize/Token接口返回的字段内容一致，这个接口如有返回Token信息就已登录系统进入首页，否则就进入绑定账号界面。
              wx.$toast('登录成功！')
              this.setLoginStorage(data)
              // 跳转到首页
              wx.reLaunch({ url: '/repairPages/service_menu/service_menu' });
            } else {  // 未绑定，显示账户密码，用户输入后再绑定
              this.data.Transaction_No = data.Transaction_No;
              wx.$toast('该微信号未绑定账户，请先绑定')
              this.setData({
                isBinding: true,
              })
            }
          })
        } else {
          console.log('登录失败！' + res.errMsg)
          wx.$toast('授权失败！')
        }
      }
    })
  },
  // 微信登录绑定接口
  updateWxBind (post) {
    let { Transaction_No, } = this.data,
      { User, Password } = post;
    let data = {
      User,
      Password,
      Transaction_No,
    }
    wx.showLoading({ mask: true, })
    wx.$post(1, 'Authorize/update_miniprogram_bind', data).then(res => {
      console.log(res, '小程序绑定接口')
      if (res.errcode !== 0) return
      wx.$toast('绑定成功！')
      this.getWxLogin();
      /*this.postLogin(post).then((res) =>{
        this.setLoginStorage(res.data.row[0] || {},post)
        this.setData({isBinding: false})
        // 跳转到首页
        wx.reLaunch({url: '/pages/home/home'});
      })*/
    })
  },

  _showToast (content) {
    wx.showToast({
      title: content,
      icon: 'none'
    })
  },

  //切换系统到diy
  toggleSys () {
    wx.redirectTo({ url: '/pages/login/login' })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    wx.hideHomeButton()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})
